#pragma once

#include <unistd.h>
#include <sys/syscall.h>

namespace CurrentThread
{
    extern __thread int t_cachedTid; // 本地线程变量-记录线程id

    void cacheTid();

    inline int tid()
    {
        if (__builtin_expect(t_cachedTid == 0, 0)) // 告诉编译器t_cachedTid == 0很可能为假
        // 编译器在编译过程中，会将可能性更大的代码紧跟着起面的代码，从而减少指令跳转带来的性能上的下降
        {
            cacheTid();
        }
        return t_cachedTid;
    }
}